LVM(logical volume manager)とは、複数のハード・ディスクやパーティションにまたがった記憶領域を一つの仮想的な論理ボリュームとして扱うことのできるディスク管理機能です。
LVMでは、パーティション内を数十Mバイトの多数の小さな領域(物理エクステント)に細かく分割して管理する。(1)物理エクステントの集団を2つに分ける、(2)異なるハード・ディスク上にある物理エクステントを1つにまとめて管理する、ことであたかも1つのハード・ディスクを分割したり、複数のハード・ディスクを結合したかのように利用できる。
LVMを利用するには、ハード・ディスク内にLVM用のパーティションを用意する(図)。このパーティションを物理ボリューム(PV:Physical Volume)と呼ぶ。
LVMに参加する物理ボリュームは、最初に初期化される。初期化時に物理ボリュームは特定の容量の小さな領域に分割される。この小さな領域を、物理エクステント(PE:Physical Extents)と呼ぶ。PEのデフォルト・サイズは、数Mバイトから数10Mバイト程度の場合が多い。
複数の物理ボリュームをまとめて新たに作られる管理単位が、ボリューム・グループ(VG:Volume Group)だ。図では物理ボリューム内の物理エクステントの数と新しく作ったボリューム・グループ内の物理エクステントの数が等しくなっているが、実際には複数の物理ボリュームにある物理エクステントをまとめて一つのボリューム・グループにできる。
最後に、実際のパーティション同様に利用できる論理ボリューム(LV:Logical Volume)を作る。論理ボリュームはボリューム・グループ内にある物理エクステントを必要分だけまとめて構成する。
ユーザーが利用するのは、あくまでも論理ボリュームであって、論理ボリューム以外の要素は利用時には意識しなくて済む。言い換えると、ボリューム・グループは仮想的なハード・ディスク、論理ボリュームは仮想的なパーティションとみなすことができる。
ユーザーは作成した論理ボリュームのデバイス・ファイルを用いてマウントすることで、実際のパーティションのように利用できる。
LVMを利用するには、最初に LVMパーティションが少なくても1つ必要です。パーティションタイプは、16進数で「8e」です。Linux LVMパーティションの作成には、fdisk や、cfdisk などパーティション操作が行なえるツールを使います。
# fdisk /dev/sdb |
コマンド (m でヘルプ): n コマンドアクション e 拡張 p 基本領域 (1-4) p 領域番号 (1-4): 3 領域番号 (1-4): 3 最初 シリンダ (4417-19590, default 4417): Using default value 4417 終点 シリンダ または +サイズ または +サイズM または +サイズK (4417-19590, default 19590): Using default value 19590 コマンド (m でヘルプ): t <--- パーティションタイプの変更のため Partition number (1-4): 3 16進数コード (L コマンドでコードリスト表示): 8e 領域のシステムタイプを 3 から 8e (Linux LVM) に変更しました コマンド (m でヘルプ): p Disk /dev/hda: 10.1 GB, 10110320640 bytes 16 heads, 63 sectors/track, 19590 cylinders Units = cylinders of 1008 * 512 = 516096 bytes デバイス Boot Start End Blocks Id System /dev/hda1 * 1 249 125464+ 83 Linux /dev/hda2 250 4416 2100168 8e Linux LVM /dev/hda3 4417 19590 7647696 8e Linux LVM Command (m for help): w 領域テーブルは交換されました! ioctl() を呼び出して領域テーブルを再読込みします。 ディスクを同期させます。 警告: 領域テーブルの再読込みがエラー 16 で失敗しました: デバイスもしくはリソースがビジー状態です。 カーネルはまだ古いテーブルを使っています。 新しいテーブルは次回リブート時に使えるようになるでしょう。 ディスクを同期させます。 |
再起動するか partprobe コマンドを実行します。
partprobeコマンドは、Fedora CoreをはじめとするRed Hat系ディストリビューションに含まれるコマンドです。ディスクからパーティションテーブルを読み込み、カーネル内のパーティションテーブルに反映することができます。
PVを作成するには、pvcreate というコマンドを使います。このコマンドを実行することにより、LVMパーティションが区画整備されます。PVがうまく作成されたか確認するには、pvdisplay コマンドを実行します。
# pvcreate /dev/hda3 |
Physical volume \"/dev/hda3\" successfully created |
# pvdisplay -C |
PV VG Fmt Attr PSize PFree /dev/hda2 vg01 lvm2 a- 2.00G 0 /dev/hda3 lvm2 -- 7.29G 7.29G |
# pvdisplay /dev/hda3 |
--- Physical volume --- PV Name /dev/sdb1 VG Name PV Size 1.00 GB Allocatable NO PE Size (KByte) 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID 1RA8bb-JHjJ-KfAO-JobK-QKAg-aYp4-eAdGJ0 |
PVの作成を行った後、PVをまとめるためにVGを作成します。
VGを作成するには、vgcreate というコマンドを使います。(図5) このコマンドを実行することによりVGが定義され、同時にPVの中にPEが作成されます。
今回はPEサイズ32MBで作成します。VGが作成されたことを確認するには、vgdisplay コマンドを実行します。
# vgcreate -s 32m testvg /dev/hda3 |
Volume group \"testvg\" successfully created |
# vgdisplay -C |
VG #PV #LV #SN Attr VSize VFree testvg 1 0 0 wz--n 7.28G 7.28G vg01 1 2 0 wz--n 2.00G 0 |
# vgdisplay testvg |
--- Volume group --- VG Name testvg System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 7.28 GB PE Size 32.00 MB Total PE 233 Alloc PE / Size 0 / 0 Free PE / Size 233 / 7.28 GB VG UUID Sqfqv5-i3s3-CnvX-MZW3-bl9M-bHQA-3WnD1B |
LVを作成するには、lvcreate というコマンドを使います。VG「testvg」上に1GBの「opt_lv」というLVを作成します。LVがうまく作成できたか確認するには、lvdisplay コマンドを実行します。
# lvcreate -L 1G -n opt_lv testvg |
Logical volume \"opt_lv\" created |
# lvdisplay -C |
LV VG Attr LSize Origin Snap% Move Copy% opt_lv testvg -wi-a- 1.00G root_lv vg01 -wi-ao 1.50G swap_lv vg01 -wi-ao 512.00M |
# lvdisplay /dev/testvg/opt_lv |
--- Logical volume --- LV Name /dev/testvg/opt_lv VG Name testvg LV UUID jsyfKs-Ri3q-cPdt-pTcI-BAX3-chrG-hGP5zl LV Write Access read/write LV Status available # open 0 LV Size 1.00 GB Current LE 32 Segments 1 Allocation inherit Read ahead sectors 0 Block device 253:2 |
LVを作成した後、その中にファイルシステムを作ります。
ファイルシステムを作成するには、mkfs コマンドを使います。
最近ではファイルシステムの種類ごとにmkfs.ext2、mkfs.ext3、mkfs.xfsなどといったコマンドも用意されています。今回は、XFSでフォーマットします。
# mkfs.xfs -f /dev/testvg/opt_lv |
meta-data=/dev/testvg/opt_lv isize=256 agcount=8, agsize=32768 blks = sectsz=512 data = bsize=4096 blocks=262144, imaxpct=25 = sunit=0 swidth=0 blks, unwritten=1 naming =version 2 bsize=4096 log =internal log bsize=4096 blocks=2560, version=1 = sectsz=512 sunit=0 blks realtime =none extsz=65536 blocks=0, rtextents=0 |
従来のパーティション管理と同じく、mount コマンドを実行します。きちんとマウントされているか、df コマンドで確認します。
# mount /dev/testvg/opt_lv /opt # df -h /opt/ |
Filesystem サイズ 使用 残り 使用% マウント位置 /dev/mapper/testvg-opt_lv 1014M 144K 1014M 1% /opt |
www.it-shikaku.jp
[Top] | |
[講義目次] | |
[2.01:システムの起動とLinuxカーネル] | |
[2.02:ファイルシステムとストレージ管理] | |
[2.02.1 ファイルシステムの設定とマウント] | |
[2.02.2 ファイルシステムの管理] | |
[2.02.3 論理ボリュームマネージャの設定と管理] | |
[2.03:ネットワーク構成] | |
[講義検索] | |
[リンク集] |